package com.finna.tenant.mapper;

import com.finna.tenant.entity.TenantAccountJoin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 租户账号关联Mapper
 */
@Mapper
public interface TenantAccountJoinMapper {
    
    /**
     * 插入租户账号关联
     */
    int insert(TenantAccountJoin tenantAccountJoin);
    
    /**
     * 根据ID更新
     */
    int updateById(TenantAccountJoin tenantAccountJoin);
    
    /**
     * 根据ID删除
     */
    int deleteById(@Param("id") Long id);
    
    /**
     * 根据租户ID删除关联
     */
    int deleteByTenantId(@Param("tenantId") Long tenantId);
    
    /**
     * 根据账号ID删除关联
     */
    int deleteByAccountId(@Param("accountId") Long accountId);
    
    /**
     * 根据ID查询
     */
    TenantAccountJoin selectById(@Param("id") Long id);
    
    /**
     * 根据租户ID和账号ID查询
     */
    TenantAccountJoin selectByTenantAndAccount(@Param("tenantId") Long tenantId, @Param("accountId") Long accountId);
    
    /**
     * 根据租户ID查询列表
     */
    List<TenantAccountJoin> selectByTenantId(@Param("tenantId") Long tenantId);
    
    /**
     * 根据账号ID查询列表
     */
    List<TenantAccountJoin> selectByAccountId(@Param("accountId") Long accountId);
    
    /**
     * 条件查询列表（PageHelper自动分页）
     */
    List<Map<String, Object>> selectListWithDetails(@Param("params") Map<String, Object> params);
    
    /**
     * 查询租户的账号列表（带详细信息）
     */
    List<Map<String, Object>> selectAccountsByTenantId(@Param("tenantId") Long tenantId);
    
    /**
     * 查询账号所属的租户列表（带详细信息）
     */
    List<Map<String, Object>> selectTenantsByAccountId(@Param("accountId") Long accountId);
}

